using System;
using Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Request;
using Sinacor.Servico.Bovespa.Ordens.BusinessEntity;
using System.Collections.Generic;

namespace Sinacor.Servico.Bovespa.Ordens.Service.ServiceImplementation.Translator
{
    
    /// Data:21/01/2008 17:08
    /// Autor:DMilanez.7Comm
    /// Obs: Renomeado de TranslateBetweenOrdemRequestAndOrdem para TranslateAlterarOrdemRequest 
    public class TranslateAlterarOrdemRequest
    {
        /// Data:21/01/2008 15:39
        /// Autor:DMilanez.7Comm
        /// Obs: Metodo alterado
        /// 
        /// Data:21/01/2008 17:09
        /// Autor:DMilanez.7Comm
        /// Obs: Renomeado de TranslateOrdemRequestToOrdem pata ToOrdem        
        public static BusinessEntity.Ordem ToOrdem(DataContract.Request.AlterarOrdemRequest from)
        {
            if (from == null)
                return null;

            Sinacor.Servico.Bovespa.Ordens.BusinessEntity.Ordem to = new Sinacor.Servico.Bovespa.Ordens.BusinessEntity.Ordem();

            to.QuantidadeAnexo4 = from.QuantidadeAnexo4;
            to.QuantidadeAnexo5 = from.QuantidadeAnexo5;
            to.CodigoCliente = from.CodigoCliente;
            to.DigitoCliente = from.DigitoCliente;
            to.Bolsa = from.Bolsa;
            to.CodigoCarteira = from.Carteira;
            to.DataValidade = from.DataValidade;
            to.TipoMercado = (BusinessEntity.Enum.TipoMercado)from.TipoMercado;
            to.NaturezaOperacao = (BusinessEntity.Enum.TipoNaturezaOperacao)from.NaturezaOperacao;
            to.CodigoUsuarioOrdem = from.CodigoOperador;
            to.NumeroOrdemOriginal = from.NumeroOrdemOriginal;
            to.Titulo = from.Titulo;
            to.PercentualReducaoAcrescimo = from.PercentualCorretagem;
            to.IndicadorPessoaVinculada = from.IndicadorPessoaVinculada;
            to.Preco = from.Preco;
            to.Quantidade = from.Quantidade;
            to.Situacao = from.Situacao;
            to.TipoLiquidacao = from.TipoLiquidacao;
            to.IndicadorOrdemAbertaAdminCon = from.IndicadorOrdemAbertaAdminCon;
            to.Cambio = from.Cambio;
            to.NomeEmissorOrdem = from.NomeEmissorOrdem;
            to.TaxaFinanciamento = from.TaxaFinanciamento;
            to.ValorFinanciado = from.ValorFinanciado;
            to.VencimentoTermo = from.VencimentoTermo;
            to.CodigoBroker = from.ContaMae;
            to.TextoJustificativa = from.TextoJustificativa;

            to.DataOrdem = from.DataOrdem;
            to.NumeroOrdem = from.NumeroOrdem;
            to.NumeroOrdemSubSequencia = from.NumeroOrdemSequencia;

            to.TipoOrdem = new List<Sinacor.Servico.Bovespa.Ordens.BusinessEntity.Enum.TipoOrdem>();
            if (from.TipoOrdem != null)
            {
                foreach (Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Enum.TipoOrdem tipoOrdem in from.TipoOrdem)
                    to.TipoOrdem.Add((Sinacor.Servico.Bovespa.Ordens.BusinessEntity.Enum.TipoOrdem)tipoOrdem);
            }

            return to;
        }
    }
}

